Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move Handshake and Aux Chain out of Opgroups #10

Open
wants to merge 9 commits into
base: pulp
Choose a base branch
from

Conversation

Lynx005F
Copy link

Removes the Handshake from all full throughput Opgroups and places it in it's own module.
Primarily this is a prerequisite for subsequent PR for redundant operations as otherwise the Lane Handshakes are statefull
and can get out of sync when faults occurr.

Secundarily this also fixes a bug where if a Vector Division is followed by a Normal Division the Vector division is output twice.
(Check vector tb in internal git lab).

Outside functionality / area / critical path stays the same appart from the bugfix.

Effects in depdencies:

  • Potentially allows RedMulE to now use unmodified fma and conv files.
  • OpenHWGroup ext reg enable needs to be reimplemented in aux module

Draft until further testing and discussion about aux module for division (will most likely be needed for redundant operation).

@Lynx005F Lynx005F force-pushed the itemm/div_rebase branch 4 times, most recently from 0d38031 to f813f4e Compare June 12, 2024 10:35
@Lynx005F
Copy link
Author

I now added an aux chain module for the division operation as well, and refactored the commits so that there are fewer changes.

Testing

I wrote some new tests which mix different operations in both vectorial and non-vectorial form.
These tests are internally available in gitlab fpnew_tb under the following branches for different FPU configurations:

  • itemm/no_redundancy_testing
  • itemm/pulp_div_testing
  • itemm/thmulti_div_testing
  • itemm/th32_div_testing

As said before the vector div into normal div double output bug got solved.

The TH32 Division Opgroup no properly synchronisez with unit width > 32. Previously this configuration did not synchronize but also had no guard clause.

Synthesis

I ran synthesis with the R5SCY Configuration:

  • Merged ADDMUL with 1 pipeline register
  • Parallel NONCOMP with 1 pipeline register
  • Merged CONV with 1 pipeline register
  • Disabled SDOTP
  • Disabled DIVSQRT
    (This configuration is very tight on path of the ADDMUL compared to other configurations)

Synthesis scripts are internally available in gitlab and results can be found under itemm/aux_chain
There are no significant changes in the critical path
(at all synthesized timings the area is slightly lower, but always within the margins of synthesis randomness)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant